package com.iplant.wms.service.basicenum.brm;

import com.iplant.base.po.enums.BaseEnum;

/**
 * 资源类型
 * 
 * @author femi
 * @CreateTime 2022-5-30
 */
public enum BRMShelvesTypes implements BaseEnum {
	/**
	 * 默认
	 */
	Default(0, ""),
	/**
	 * 代码 01-如果从“收货库位”收货，则上架到“目标库位”
	 */
	Code01(1, "代码 01"),
	/**
	 *代码 02-如果从“收货库位”收货，则在指定的库区中查找合适的库位
	 */
	Code02(2, "代码 02"),
	/**
	 * 代码 03-在指定库区中寻找合适的库位
	 */
	Code03(3, "代码 03"),
	/**
	 *代码 04-上架到“目标库位”
	 */
	Code04(4, "代码 04"),
	/**
	 * 代码 06-在物料所指定的库区列表查找合适的库位”
	 */
	Code06(5, "代码 06"),
	/**
	 *代码 07-上架到产品所指定的上架库位
	 */
	Code07(6, "代码 07"),

	/**
	 * 代码 11-使用产品的件拣货库位
	 */
	Code11(7, "代码 11"),
	/**
	 *代码 12-使用产品的箱拣货库位
	 */
	Code12(8, "代码 12"),
	/**
	 * 代码 13-使用产品的箱/件拣货库位
	 */
	Code13(9, "代码 13"),
	/**
	 *代码 21-如果批次属性为指定批次属性，则在指定库区中查找合适的库位
	 */
	Code21(10, "代码 21"),
	/**
	 * 代码 22-如果批次属性为指定批次属性，则上架到目标库位
	 */
	Code22(11, "代码 22"),
	/**
	 *代码 30-查找同类产品相邻的库位
	 */
	Code30(12, "代码 30"),
	/**
	 * 代码 31-查找拣货位最近的存储位
	 */
	Code31(13, "代码 31"),
	/**
	 *代码 08-如果从“收货库位”收货，则在指定的货架中查找合适的库位
	 */
	Code08(14, "代码 08"),
	/**
	 *代码 09-在指定的货架中查找合适的库位
	 */
	Code09(15, "代码 09"),
	/**
	 *代码 23-如果批次属性为指定批次属性，则在指定货架中查找合适的库位
	 */
	Code23(17, "代码 23");




	private int value;
	private String label;
	private String remark;

	private BRMShelvesTypes(int value, String label) {
		this.value = value;
		this.label = label;
	}
	private BRMShelvesTypes(int value, String label, String remark) {
		this.value = value;
		this.label = label;
		this.remark = remark;
	}

	/**
	 * 通过 value 的数值获取枚举实例
	 *
	 * @param val
	 * @return
	 */
	public static BRMShelvesTypes getEnumType(int val) {
		for (BRMShelvesTypes type : BRMShelvesTypes.values()) {
			if (type.getValue() == val) {
				return type;
			}
		}
		return Default;
	}

	public static BRMShelvesTypes getEnumType(String val) {
		for (BRMShelvesTypes type : BRMShelvesTypes.values()) {
			if (type.getLabel().equals(val)) {
				return type;
			}
		}
		return Default;
	}

	@Override
	public int getValue() {
		return value;
	}

	@Override
	public void setValue(int value) {
		this.value = value;
	}

	@Override
	public String getLabel() {
		return label;
	}

	@Override
	public void setLabel(String label) {
		this.label = label;
	}

	@Override
	public String getRemark() {
		return remark;
	}

	@Override
	public void setRemark(String remark) {
		this.remark = remark;
	}
}
